.版本 2
.支持库 commobj
.支持库 iext
.支持库 EThread
.支持库 edroptarget

.程序集 窗口程序集_窗口1
.程序集变量 工作线程池EX, 鱼刺类_线程池Ex
.程序集变量 运行状态, 运行状态信息, , , 状态信息
.程序集变量 许可证, 整数型
.程序集变量 全局游戏分类成功, 整数型
.程序集变量 超级文本, 文本型
.程序集变量 最大数量, 整数型
.程序集变量 超时值, 整数型
.程序集变量 导出存放文件名, 文本型
.程序集变量 集_成功数, 整数型
.程序集变量 线程操作, 鱼刺类_线程操作
.程序集变量 集_临界, 鱼刺类_临界许可

.子程序 _标签_运行状态信息_反馈事件, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型
.局部变量 text, 文本型
.局部变量 log, 文本型
.局部变量 Color, 整数型

' 小伙伴们可能遇到过 频繁操作窗口组件 会照那个组件成有几率一闪一闪的
' 投递消息给UI线程 让消息循环 去队列处理窗口组件操作 即可解决此问题
.如果真 (内部_取队列日志 (log, Color) ＝ 真)
    ' 画板_运行日志.文本颜色 ＝ Color
    ' 画板_运行日志.滚动写行 (log)
.如果真结束


.子程序 _列表框数据_右键单击表项

弹出菜单 (菜单1, , )

.子程序 _拖放对象1_得到文件
.参数 接收到的文件路径, 文本型
.局部变量 快速, 快速文本对象
.局部变量 保存文本, 鱼刺类_输出文本
.局部变量 文本, 文本型, , "0"
.局部变量 重复数, 整数型
.局部变量 i, 整数型
.局部变量 临时目录, 文本型
.局部变量 临时文件名, 文本型
.局部变量 j_str, 文本型
.局部变量 去重后文件名, 文本型
.局部变量 去重后目录完整路径, 文本型

状态条.置文本 (5, “文件已拖入,正在导入列表...”)
载入小小小号 (接收到的文件路径)

.子程序 _列表数据去重复_被选择, , 公开

启动线程 (&去重复, 1, )

.子程序 去重复
.参数 _, 整数型
.局部变量 重复数, 整数型
.局部变量 总耗时, 整数型
.局部变量 去重耗时, 整数型

超级列表框_去重复 (列表框数据, 1, 真, 重复数, 总耗时, 去重耗时)
输出运行日志 (“数据对比重复数:” ＋ 到文本 (重复数) ＋ “|去重耗时：” ＋ 到文本 (去重耗时), 2)

.子程序 超级列表框_去重复
.参数 参_超级列表框, 超级列表框, 参考
.参数 参考列, 整数型
.参数 重新编号, 逻辑型, 可空, 为真时重新编号  即使没有重复
.参数 重复数, 整数型, 参考 可空
.参数 总耗时, 整数型, 参考 可空
.参数 去重耗时, 整数型, 参考
.局部变量 哈希, QEHashTable
.局部变量 开始时间, 整数型
.局部变量 新表项, 快速字节集对象
.局部变量 原表项, 快速字节集对象
.局部变量 原表项数, 整数型
.局部变量 原表项字节集数组, 字节集, , "0"
.局部变量 计次, 整数型
.局部变量 内部字节集, 字节集
.局部变量 内部字节集数组, 字节集, , "0"
.局部变量 内内部字节集, 字节集
.局部变量 计数, 整数型
.局部变量 计次2, 整数型


开始时间 ＝ 取启动时间 ()  ' 计时开始

' 原表项.置可用内存 (, )
原表项.置字节集 (参_超级列表框.表项)  ' 用快速字节集对象的话  数据量大的时候分割快一点  但是超过2G要置可用内存
原表项字节集数组 ＝ 原表项.分割字节集 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 }, )  ' 创建个超级列表框 加点表项 调试输出一下就知道字节集构成了

哈希.重置 (取数组成员数 (原表项字节集数组) ＋ 1)  ' 加1是自我安慰  可以无视...

.计次循环首 (取数组成员数 (原表项字节集数组) － 1, 计次)  ' 数组第一个是空字节集
    内部字节集 ＝ 原表项字节集数组 [计次 ＋ 1]
    内部字节集数组 ＝ 分割字节集 (内部字节集, { 0, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 }, )  ' 数组最后一个多了{0,0}  但是并没有影响什么
    .如果真 (取数组成员数 (内部字节集数组) ＞ 参考列)  ' 默认将没有参考列或者为空的表项也当作重复项删除了  可以改
        内内部字节集 ＝ 内部字节集数组 [参考列 ＋ 1]
        .如果真 (内内部字节集 ≠ {  })
            .如果真 (哈希.查找 (内内部字节集, ) ＝ 假)
                哈希.添加 (内内部字节集, { 0 })
                .如果 (重新编号)
                    计数 ＝ 计数 ＋ 1
                    新表项.添加 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } ＋ 到字节集 (到文本 (计数)))
                    .计次循环首 (取数组成员数 (内部字节集数组) － 1, 计次2)
                        新表项.添加 ({ 0, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } ＋ 内部字节集数组 [计次2 ＋ 1])
                    .计次循环尾 ()
                .否则
                    新表项.添加 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } ＋ 内部字节集)
                .如果结束

                到循环尾 ()
            .如果真结束

        .如果真结束

    .如果真结束
    重复数 ＝ 重复数 ＋ 1
.计次循环尾 ()

去重耗时 ＝ 取启动时间 () － 开始时间  ' 去重时间

.如果真 (原表项.取字节集 (, ) ≠ 新表项.取字节集 (, ))
    参_超级列表框.可视 ＝ 假  ' 可视和重画会严重影响时间
    参_超级列表框.禁止重画 ()
    参_超级列表框.表项 ＝ 新表项.取字节集 (, )
    参_超级列表框.可视 ＝ 真
    参_超级列表框.允许重画 ()
    参_超级列表框.保证显示 (参_超级列表框.取表项数 () － 1)
.如果真结束

总耗时 ＝ 取启动时间 () － 开始时间


.子程序 去文本数组重复, , , By 帝皇法老
.参数 文本数组, 文本型, 参考 数组
.局部变量 X, 整数型
.局部变量 键, 变体型
.局部变量 空变体型变量, 变体型
.局部变量 哈希表, 对象
.局部变量 N, 整数型

X ＝ 1
哈希表.创建 (“scripting.Dictionary”, )
.循环判断首 ()
    键.赋值 (文本数组 [X], )

    .如果 (哈希表.逻辑方法 (“Exists”, 键))
        删除成员 (文本数组, X, )
    .否则
        哈希表.方法 (“Add”, 键, 空变体型变量)
        置入代码 ({ 255, 69, 252 })

    .如果结束

.循环判断尾 (X ≤ 取数组成员数 (文本数组))


.子程序 去重复操作
.参数 num, 整数型
.参数 文件所在路径, 文本型
.局部变量 快速, 快速文本对象
.局部变量 文本数组数据, 文本型, , "0"
.局部变量 原数组量, 整数型
.局部变量 新数组量, 整数型
.局部变量 index, 整数型
.局部变量 临时数组, 文本型, , "0"
.局部变量 计次2, 整数型
.局部变量 计次1, 整数型
.局部变量 N, 整数型

输出运行日志 (“正在导入数据。。。。”, 1)


快速.从文件读 (文件所在路径)
文本数组数据 ＝ 快速.分割文本 (#换行符, )
快速.清除文本 ()
原数组量 ＝ 取数组成员数 (文本数组数据)

去文本数组重复 (文本数组数据)

新数组量 ＝ 取数组成员数 (文本数组数据)
输出运行日志 (“去重复前：” ＋ 到文本 (原数组量) ＋ “>>>检测重复：” ＋ 到文本 (原数组量 － 新数组量) ＋ “>>>去重复后：” ＋ 到文本 (新数组量), 1)
输出运行日志 (“正在载入到列表数据。。。。”, 1)

列表框数据.全部删除 ()
.计次循环首 (取数组成员数 (文本数组数据), N)
    临时数组 ＝ 分割文本 (文本数组数据 [N], “----”, )
    .如果真 (取数组成员数 (临时数组) ≥ 3)
        index ＝ 列表框数据.插入表项 (, , , , , )
        列表框数据.置状态图片 (index, 1)
        列表框数据.置标题 (index, 0, 到文本 (index ＋ 1))
        列表框数据.置标题 (index, 1, 临时数组 [1])
        列表框数据.置标题 (index, 2, 临时数组 [2])
        列表框数据.置标题 (index, 3, 临时数组 [3])
        列表框数据.置标题 (index, 3, 临时数组 [3])
    .如果真结束

    _处理事件 ()
.计次循环尾 ()
清除数组 (临时数组)
清除数组 (文本数组数据)
列表框数据.保证显示 (index)
输出运行日志 (“导入数据到列表完成。。。。”, 1)

.子程序 __启动窗口_创建完毕
.局部变量 返回值, 文本型
.局部变量 str, 文本型
.局部变量 s广告, 文本型
.局部变量 a, 文本型
.局部变量 b, 文本型
.局部变量 c, 文本型

未闻花名_皮肤加载 (13, , , , , 真)
.如果真 (信息框 (“此程序仅用于学习、技术交流，请勿用于非法！如出现任何问题后果自负！”, #确认取消钮, “免责声明！！！”, ) ＝ #取消钮)
    结束 ()
.如果真结束

.如果真 (文件是否存在 (取运行目录 () ＋ “\RSCProject.dll”) ＝ 假)
    写到文件 (取运行目录 () ＋ “\RSCProject.dll”, #RSCProjectDLL)
.如果真结束
.如果真 (文件是否存在 (取运行目录 () ＋ “\RSOpenCV.dll”) ＝ 假)
    写到文件 (取运行目录 () ＋ “\RSOpenCV.dll”, #RSOpenCVDLL)
.如果真结束
.如果真 (文件是否存在 (取运行目录 () ＋ “\XfreeJY.dll”) ＝ 假)
    写到文件 (取运行目录 () ＋ “\XfreeJY.dll”, #XfreeJYDLL)
.如果真结束

jyInit ()
' 'jiRel (2)
SetProcessAffinityMask (-1, 1)
全目录Test ＝ 取运行目录 () ＋ “\Dy_登录\”
全目录临时 ＝ 全目录Test ＋ “临时”
全目录状态 ＝ 全目录Test ＋ “数据状态”
全目录导出 ＝ 全目录Test ＋ “导出记录”
.如果真 (文件是否存在 (全目录Test) ＝ 假)
    目录_创建 (全目录Test)
.如果真结束
.如果真 (文件是否存在 (全目录临时) ＝ 假)
    目录_创建 (全目录临时)
.如果真结束
.如果真 (文件是否存在 (全目录状态) ＝ 假)
    目录_创建 (全目录状态)
.如果真结束
.如果真 (文件是否存在 (全目录导出) ＝ 假)
    目录_创建 (全目录导出)
.如果真结束

配置_读取_易语言组件 (_启动窗口)
拖放对象1.注册拖放控件 (列表框数据.取窗口句柄 ())
启动线程 (&账号写入列表, , )

.子程序 __启动窗口_可否被关闭, 逻辑型

_启动窗口.总在最前 ＝ 假
.如果 (信息框 (“程序正在工作,确定要退出?”, #信息图标 ＋ #确认钮 ＋ #取消钮, , ) ＝ #确认钮)
    返回 (真)
.否则
    返回 (假)
.如果结束


.子程序 __启动窗口_将被销毁

工作中 ＝ 假
配置_保存_易语言组件 (_启动窗口)
账号写出列表 ()
结束 ()

.子程序 _时钟_更新运行状态_周期事件
.局部变量 str, 文本型
.局部变量 int, 整数型
.局部变量 更新配置, 整数型

.如果真 (工作中 ＝ 真)
    更新配置 ＝ 更新配置 ＋ 300
    .如果真 (更新配置 ≥ 30000)  ' 30秒更新一次配置
        更新配置 ＝ 0
    .如果真结束
    .' 如果真 (配置_更新 () ＝ 假)
        ' 状态条.置文本 (1, “运行参数设置异常！”)
    .如果真结束

    int ＝ 到整数 (编辑框_工作线程.内容)  ' 重置最大线程数
    .如果真 (int ＞ 0 且 int ＜ 50)  ' 限制最大线程数
        工作线程池EX.置_最大线程数 (int)
    .如果真结束

.如果真结束


.子程序 _粘贴数据_被选择

T粘贴数据 (列表框数据)

.子程序 _文本导入_被选择

通用对话框1.初始目录 ＝ 取运行目录 ()  ' 3=系统桌面
通用对话框1.标题 ＝ “请选择欲导入的文本”
.如果真 (通用对话框1.打开 () ＝ 真)
    超级文本 ＝ 通用对话框1.文件名
    启动线程 (&超级导入, , )
.如果真结束


.子程序 超级导入
.局部变量 time, 整数型

超级列表数据_导入文本 (列表框数据, 超级文本, , “----”, 3, 假, time)

提示框 (“导入完成，耗时：” ＋ 到文本 (time ÷ 1000) ＋ “秒”, 0, , , 1000)

.子程序 _全选_被选择

T全选 (列表框数据)

.子程序 _反选_被选择

T反选 (列表框数据)

.子程序 _全不选_被选择

T全不选 (列表框数据)

.子程序 _删除当前_被选择

T删除当前行 (列表框数据)

.子程序 _删除勾选_被选择

T删除勾选 (列表框数据)

.子程序 _清空全部_被选择

列表框数据.全部删除 ()

.子程序 _导出勾选账号数据_被选择

输入框 (“默认保存在默认在同程序路径下的导出数据目录下，仅输入文件名即可”, “导出文件”, , 导出存放文件名, , )
.如果真 (导出存放文件名 ＝ “”)
    信息框 (“请输入文件名！”, 0, , )
    返回 ()
.如果真结束

启动线程 (&保存勾选, , )

.子程序 保存勾选
.局部变量 导出到文件, 鱼刺类_输出文本
.局部变量 j_str, 文本型
.局部变量 开始时间, 整数型
.局部变量 耗时, 整数型
.局部变量 N, 整数型

开始时间 ＝ 取启动时间 ()
输出运行日志 (“正在导出数据。。。。”, 1)
.计次循环首 (列表框数据.取表项数 (), N)
    .如果真 (列表框数据.取当前状态图片 (N － 1) ＝ 1)
        j_str ＝ 列表框数据.取标题 (N － 1, 1) ＋ “----” ＋ 列表框数据.取标题 (N － 1, 2) ＋ “----” ＋ 列表框数据.取标题 (N － 1, 3) ＋ “----” ＋ 列表框数据.取标题 (N － 1, 4)
        导出到文件.写文本行 (j_str, 导出存放文件名, 全目录导出, “.txt”)

    .如果真结束

.计次循环尾 ()
导出到文件.关闭所有文件占用 ()
耗时 ＝ 取启动时间 () － 开始时间

输出运行日志 (“导出数据完成，耗时：” ＋ 到文本 (耗时), 1)
提示框 (“导出完成”, , , , 2000)



.子程序 _按钮_启动_被单击

.判断开始 (按钮_启动.标题 ＝ “启  动”)
    配置_保存_易语言组件 (_启动窗口)
    按钮_启动.禁止 ＝ 真
    .如果真 (线程操作.创建 (&工作线程) ＝ 假)
        按钮_启动.禁止 ＝ 假
        返回 ()
    .如果真结束


.判断 (按钮_启动.标题 ＝ “停  止”)
    按钮_启动.禁止 ＝ 真
    按钮_启动.标题 ＝ “停 止 中...”
    状态条.置文本 (1, “程 序 停 止 中...”)
    工作中 ＝ 假
    工作线程池EX.销毁 ()
.默认

.判断结束


.子程序 工作线程
.局部变量 bool, 逻辑型
.局部变量 是否创建, 逻辑型
.局部变量 N, 整数型
.局部变量 int, 整数型
.局部变量 局_任务数量, 整数型
.局部变量 列表数量, 整数型
.局部变量 user, 文本型
.局部变量 pass, 文本型
.局部变量 data, 文本型
.局部变量 任务数, 整数型

线程操作.置CPU亲和性 ()
按钮_启动.标题 ＝ “启 动 中...”
状态条.置文本 (1, “程序启动中...”)

bool ＝ 工作线程池EX.创建 (到整数 (删首尾空 (编辑框_工作线程.内容)), , , 真, , 1024 × 512)
.如果真 (bool ＝ 假)
    状态条.置文本 (1, “初始化工作线程池失败！”)
    按钮_启动.标题 ＝ “启  动”
    按钮_启动.禁止 ＝ 假
    返回 ()
.如果真结束

工作中 ＝ 真
按钮_启动.标题 ＝ “停  止”
按钮_启动.禁止 ＝ 假
int ＝ 0
.判断循环首 (工作中 ＝ 真)
    任务数 ＝ 工作线程池EX.取_执行线程数 () ＋ 工作线程池EX.取_队列任务数 ()
    任务数 ＝ 工作线程池EX.取_最大线程容量 () － 任务数
    .如果 (任务数 ＞ 0)
        .如果真 (列表框数据.取当前状态图片 (int) ＝ 1)
            工作线程池EX.投递任务 (&任务子程序, int)
            程序_延时 (到整数 (删首尾空 (编辑框_时间间隔.内容)))
        .如果真结束

        int ＝ int ＋ 1

    .否则
        程序_延时 (20)
    .如果结束

    .如果真 (int ≥ 列表框数据.取表项数 ())
        跳出循环 ()
    .如果真结束

.判断循环尾 ()
.循环判断首 ()
    程序_延时 (300)
.循环判断尾 (工作线程池EX.取_是否完全空闲 () ＝ 假)
按钮_启动.禁止 ＝ 真
工作中 ＝ 假
状态条.置文本 (1, “正在销毁工作线程池....”)
程序_延时 (300)
工作线程池EX.销毁 ()
状态条.置文本 (1, “销毁工作线程池成功!”)
程序_延时 (300)
按钮_启动.标题 ＝ “启  动”
按钮_启动.禁止 ＝ 假
状态条.置文本 (1, “执行停止完毕!”)

.子程序 GetIP, 文本型
.局部变量 str, 文本型
.局部变量 bool, 逻辑型

.循环判断首 ()
    str ＝ 编码_Utf8到Ansi (网页_访问_对象 (删首尾空 (编辑框_代理IP.内容)))
    状态条.置文本 (1, “正在获取代理：” ＋ str)
    bool ＝ 是否IP格式 (str)
    程序_延时 (300)
.循环判断尾 (取反 (bool))
返回 (str)

.子程序 是否IP格式, 逻辑型
.参数 IP, 文本型
.局部变量 正则, 正则表达式类

正则.创建 (“([1-9]\d{0,2}\.\d{1,3}\.\d{1,3}\.\d{1,3}):([1-9]\d{1,4})”, IP, , , , )
返回 (正则.取匹配数量 () ＞ 0)

.子程序 任务子程序
.参数 索引EX, 整数型
.局部变量 httpR, WinHttpR
.局部变量 str, 文本型
.局部变量 登录状态, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 zyjson2, zyJsonValue
.局部变量 zyjson3, zyJsonValue
.局部变量 zyjson4, zyJsonValue
.局部变量 code_token, 文本型
.局部变量 challenge, 文本型
.局部变量 str3, 文本型
.局部变量 局_短信, 文本型
.局部变量 Lurl, 文本型
.局部变量 局pass, 文本型
.局部变量 COOK, 文本型
.局部变量 局_Cookie, 文本型
.局部变量 str4, 文本型
.局部变量 P, 整数型
.局部变量 acf_nickname, 文本型
.局部变量 acf_uid, 文本型
.局部变量 返回CK, 文本型
.局部变量 geetest_seccode, 文本型
.局部变量 局_CookieNEW, 文本型
.局部变量 返回URL, 文本型
.局部变量 boolEX, 逻辑型
.局部变量 areaCode, 文本型
.局部变量 Sdata, 文本型
.局部变量 F_F, 文本型, , "0"
.局部变量 dy_user, 文本型
.局部变量 dy_pass, 文本型
.局部变量 mail_user, 文本型
.局部变量 mail_pass, 文本型
.局部变量 P1, 整数型
.局部变量 str2e, 文本型
.局部变量 局返回CK, 文本型
.局部变量 E, 整数型
.局部变量 返回msg, 文本型
.局部变量 局_mail_user, 文本型
.局部变量 局_mail_pass, 文本型
.局部变量 run_Cookie, 文本型
.局部变量 K, 整数型
.局部变量 DYL, 逻辑型
.局部变量 数循环, 整数型
.局部变量 bs1, 逻辑型
.局部变量 bs2, 逻辑型
.局部变量 M, 整数型
.局部变量 runerr1, 文本型
.局部变量 返回登录, 文本型
.局部变量 sild3, 逻辑型
.局部变量 challenge3, 文本型
.局部变量 validate3, 文本型
.局部变量 token3, 文本型
.局部变量 bool3, 逻辑型
.局部变量 CK, 文本型
.局部变量 did, 文本型
.局部变量 p2, 整数型
.局部变量 p3, 整数型
.局部变量 seccode2, 文本型
.局部变量 sendstr, 文本型
.局部变量 P5, 整数型
.局部变量 局_代理IP, 文本型
.局部变量 返回code, 文本型
.局部变量 Cookie_new, 文本型
.局部变量 data, 文本型
.局部变量 acf_auth, 文本型
.局部变量 acf_jwt_token, 文本型
.局部变量 acf_stk, 文本型
.局部变量 acf_ltkid, 文本型
.局部变量 局_token, 文本型

全临界.进入 ()
列表框数据.置状态图片 (索引EX, 0)
Sdata ＝ 列表框数据.取标题 (索引EX, 1)
列表框数据.保证显示 (索引EX)
全临界.退出 ()

F_F ＝ 分割文本 (Sdata, “|”, )
.如果真 (取数组成员数 (F_F) ＜ 4)
    状态条.置文本 (1, “数据格式错误”)
    窗口_置表项状态 (索引EX, 0, “数据格式错误”)
    返回 ()
.如果真结束

dy_user ＝ F_F [1]
dy_pass ＝ F_F [2]
mail_user ＝ F_F [3]
mail_pass ＝ F_F [4]

.计次循环首 (20, K)
    状态条.置文本 (1, “正在识别滑块...”)
    窗口_置表项状态 (索引EX, 0, “正在识别滑块...”)
    sild3 ＝ slide2 (challenge3, validate3, token3)
    .如果真 (sild3 ＝ 真)
        窗口_置表项状态 (索引EX, 0, “滑块成功,正在登录[” ＋ 到文本 (K) ＋ “]”)
        局_代理IP ＝ GetIP ()
        DYL ＝ 登录斗鱼2 (局_代理IP, dy_user, dy_pass, challenge3, validate3, token3, 返回code, 局返回CK)
        ' '调试输出 (局返回CK)
        .如果真 (DYL ＝ 真)
            跳出循环 ()
        .如果真结束

        .如果真 (局返回CK ＝ “账号或者密码错误”)
            状态条.置文本 (1, “账号或者密码错误”)
            窗口_置表项状态 (索引EX, 0, “账号或者密码错误”)
            CK入库 (Sdata, “账号或者密码错误”, 全目录状态)

            返回 ()
        .如果真结束
        .如果真 (局返回CK ＝ “登录异常”)
            状态条.置文本 (1, “账号登录异常”)
            窗口_置表项状态 (索引EX, 0, “账号登录异常”)
            CK入库 (Sdata, “账号登录异常”, 全目录状态)
            返回 ()
        .如果真结束
        .如果真 (局返回CK ＝ “账号不存在”)
            状态条.置文本 (1, “账号不存在”)
            窗口_置表项状态 (索引EX, 0, “账号不存在”)
            CK入库 (Sdata, “账号不存在”, 全目录状态)
            返回 ()
        .如果真结束
        .如果真 (局返回CK ＝ “邮箱密码错误”)
            状态条.置文本 (1, “邮箱密码错误”)
            窗口_置表项状态 (索引EX, 0, “邮箱密码错误”)
            CK入库 (Sdata, “邮箱密码错误”, 全目录状态)
            返回 ()
        .如果真结束
        .如果真 (局返回CK ＝ “账号登录异常”)
            状态条.置文本 (1, “账号登录异常”)
            窗口_置表项状态 (索引EX, 0, “账号登录异常”)
            CK入库 (Sdata, “账号登录异常”, 全目录状态)
            返回 ()
        .如果真结束



    .如果真结束

.计次循环尾 ()
.如果真 (DYL ＝ 假)
    状态条.置文本 (1, “登录验证失败”)
    窗口_置表项状态 (索引EX, 0, “登录验证失败”)
    返回 ()
.如果真结束

.如果真 (邮箱发送验证 (返回code, 局返回CK) ＝ 假)
    状态条.置文本 (1, “邮件发送失败”)
    窗口_置表项状态 (索引EX, 0, “邮件发送失败”)
    返回 ()
.如果真结束

局_代理IP ＝ GetIP ()
.计次循环首 (5, )
    窗口_置表项状态 (索引EX, 0, “正在获取邮件...”)
    .如果真 (取最新邮件E2X (mail_user, mail_pass, 返回msg) ＝ 真)
        局_代理IP ＝ GetIP ()
        窗口_置表项状态 (索引EX, 0, “正在提交邮件...”)
        .如果真 (提交邮件码验证 (返回code, 返回msg, 局返回CK, Lurl) ＝ 真)
            局_代理IP ＝ GetIP ()
            窗口_置表项状态 (索引EX, 0, “正在更新Cookie...”)
            bool3 ＝ 登录取Cookie (局_代理IP, 局返回CK, Lurl, run_Cookie)
            .如果真 (bool3 ＝ 真)
                窗口_置表项状态 (索引EX, 0, “登录成功”)
                跳出循环 ()

            .如果真结束

        .如果真结束

    .如果真结束

.计次循环尾 ()
.如果真 (取反 (bool3))
    窗口_置表项状态 (索引EX, 0, “登录失败”)
    返回 ()
.如果真结束


acf_auth ＝ _取单条Cookie (run_Cookie, “acf_auth”, 假)
acf_jwt_token ＝ _取单条Cookie (run_Cookie, “acf_jwt_token”, 假)
acf_uid ＝ _取单条Cookie (run_Cookie, “acf_uid”, 假)
acf_stk ＝ _取单条Cookie (run_Cookie, “acf_stk”, 假)
acf_ltkid ＝ _取单条Cookie (run_Cookie, “acf_ltkid”, 假)

Cookie_new ＝ dy_user ＋ “----” ＋ dy_pass ＋ “----” ＋ acf_auth ＋ “; ” ＋ acf_jwt_token ＋ “; ” ＋ acf_uid ＋ “; ” ＋ acf_stk ＋ “; ” ＋ acf_ltkid
' 调试输出 (Cookie_new)
' 用户3557899963----a778899----acf_auth=bb65yPiagitvgsakjF1SBchOePmprnWsAPKGHGuSqv%2FldVFH2xr9En5GRhZG7uLWAsGWrwlZjQs9tPufAuVpuq9FREP%2BHMf%2FBJQidxP6ZrBn%2FdmdHpdHz5Q; acf_jwt_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJtZDUifQ.eyJ1aWQiOjUwMjU0NjEzOSwiY3QiOjAsInN1YiI6InN0IiwiYXVkIjpbImR5Iiwibm9uZSJdLCJiaXoiOjEsImx0a2lkIjo5MDQzNDY4MCwic3RrIjoiOWE1ZGNiZTliYWQwMTRkMiIsImV4cCI6MTc3Njc3ODI1OCwiaWF0IjoxNzc2MTczNDU4LCJrZXkiOiJkeS1qd3QtbWQ1In0.ZTg5NmU5ZGRjODgwNjYzNDU1NjI1NWRkOGFjOTM0NDY
窗口_置表项状态 (索引EX, 0, Cookie_new)

CK入库 (Cookie_new, “斗鱼Cookie”, 全目录状态)


.如果真 (组合框_功能.现行选中项 ＝ 1)
    .如果 (查询SM (run_Cookie) ＝ 真)
        CK入库 (Sdata, “已认证”, 全目录状态)
        窗口_置表项状态 (索引EX, 0, “已认证”)
    .否则
        CK入库 (Sdata, “未认证”, 全目录状态)
        窗口_置表项状态 (索引EX, 0, “未认证XX”)
    .如果结束

.如果真结束



.子程序 _勾选自定义回调状态_被选择

载入 (窗口1, _启动窗口, 真)

.子程序 _勾选动态量_被选择
.局部变量 n, 整数型
.局部变量 索引, 整数型
.局部变量 存放, 文本型
.局部变量 是否存在, 逻辑型

输入框 (“勾选自定义动态量”, “自定义勾选”, , 存放, , )
.计次循环首 (列表框数据.取表项数 (), n)
    .判断开始 (寻找文本 (列表框数据.取标题 (n － 1, 5), 存放, , 假) ≠ -1)
        列表框数据.置状态图片 (n － 1, 1)

    .默认
        列表框数据.置状态图片 (n － 1, 0)
    .判断结束

.计次循环尾 ()

.子程序 _勾选列表范围1N_被选择
.局部变量 K, 整数型
.局部变量 T, 整数型
.局部变量 A, 文本型

' N ＝ 到整数 (编辑框_跳到.内容) － 1  ' 为什么要-1 因为表项索引是从0开始的 比如第10行 表项就是9
' M ＝ 到整数 (编辑框1.内容)
输入框 (“比如：1-10（代表从第1列勾选到第999列），注意：只能是连续范围！”, “勾选选用指定范围”, “1-99”, A, 1, )
.如果真 (A ≠ “”)
    .计次循环首 (列表框数据.取表项数 (), T)
        列表框数据.置状态图片 (T － 1, 0)
    .计次循环尾 ()
    .计次循环首 (到整数 (文本_取右边 (A, “-”)), K)
        .如果真 (K ≥ 到整数 (文本_取左边 (A, “-”)))
            列表框数据.置状态图片 (K － 1, 1)
        .如果真结束

    .计次循环尾 ()
    信息框 (“共选择：” ＋ 到文本 (K) ＋ “条数据”, 0, , )
.如果真结束



.子程序 _列表框数据_被双击, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 str, 文本型

str ＝ 列表框数据.取标题 (列表框数据.现行选中项, 2)
置剪辑板文本 (str)
提示框 (“已复制：” ＋ #换行符 ＋ str)

